﻿using System;
using SimpleServiceBus.Bus.Pipeline;
using SimpleServiceBus.Endpoint;

namespace SimpleServiceBus.Bus.MessageManagement
{
    public interface IMessageTypeManagementService : IEndpointService, IMessageTypeContainer
    {
        string GetDestinationForMessage(object message);
        string GetDestinationFor<TMessageType>();
        string GetDestinationForMessageType(Type messageType);

        void RegisterMessageHeaderFor<TMessageType>(string headerName, IMessageValueProvider headerValueProvider);


        void GenerateMessageHeaders(MessageEnvelope message,IMessageContext messageContext);
    }
}
